package org.dromara.common.core.constant;

import javax.swing.text.html.HTML;
import java.math.BigDecimal;
import java.util.List;

/**
 * 通用常量信息
 *
 * @author ruoyi
 */
public interface NetbarConstants {
    /**
     * 店铺Key
     */
    String NETBAR_STORE_NAME_KEY = "netbar.store.storeName";

    /**
     * 座位类型的Redis key， 默认格式为：{tenantId}:seat_type
     * hash格式
     */
    String NETBAR_SEAT_TYPE_HEAD_KEY = ":seat_type";

    /**
     * 时间流量的Redis key， 默认为：netbar.time.flowRate
     */
    String TIME_FLOW_RATE_KEY = "netbar.time.flowRate";
    /**
     * 扣费次数的Redis key， 默认为：netbar.time.deductRate
     */
    String TIME_DEDUCT_RATE_KEY = "netbar.time.deductRate";

    /**
     * 在线会员的Redis key， 格式为：{tenantId}:online_member
     * hash格式
     */
    String ONLINE_MEMBER_KEY = ":online_member";
    /**
     * 会员使用的卡券KEY 格式为：{tenantId}:online_member
     * hash格式
     */
    String ONLINE_MEMBER_USE_COUPON_KEY = ":online_member_coupon";

    /**
     * 在线客机的Redis key， 格式为：{tenantId}:online_client
     * hash格式
     */
    String ONLINE_CLIENT_KEY = ":online_client";

    /**
     * 存储Redis中的会员等级
     */
    String MEMBER_LEVEL_ONE_KEY = ":member_level";

    /**
     * 存储Redis中的卡券类型
     */
    List<String> REDIS_COUPON_TYPES = List.of(NetbarConstants.Coupon.TYPE_2, NetbarConstants.Coupon.TYPE_3, NetbarConstants.Coupon.TYPE_4);

    List<String> ALL_COUPON_TYPES = List.of(NetbarConstants.Coupon.TYPE_1,NetbarConstants.Coupon.TYPE_2, NetbarConstants.Coupon.TYPE_3, NetbarConstants.Coupon.TYPE_4);

    // 会员ID错误
    String MEMBER_ID_ERROR = "10001";


    // 卡券不存在
    String COUPON_NOT_ERROR = "20101";
    // 卡券已使用
    String COUPON_USED_ERROR = "20102";
    // 卡券已过期
    String COUPON_EXPIRED_ERROR = "20103";
    // 卡券使用条件不满足
    String COUPON_CONDITION_ERROR = "20104";



    // 充值金额错误
    String AMOUNT_ERROR = "30001";

    interface Member {
        String DEFAULT_STATUS = "0"; // 默认正常

        String STATUS_NORMAL = "0";

        String STATUS_ONLINE = "1";

        // 挂机中
        String STATUS_HANG_UP = "2";
        // 待上机（激活中）
        String STATUS_WAIT_OPEN = "3";

        // 基本余额
        Long BALANCE_TYPE_BASIC = 1L;
        // 奖励余额
        Long BALANCE_TYPE_AWARD = 2L;
        String DEFAULT_MEMBER_LEVEL_NAME = "临时会员";
    };


    interface Client {
        interface ERROR_CODE {
            // 客户机不存在
            int CLIENT_STATUS_NOT = 5001;
            // 已停用
            int CLIENT_STATUS_STOP = 5005;
            // 已绑定
            int CLIENT_STATUS_BOUND = 5006;
            // 使用中
            int CLIENT_STATUS_USING = 5007;
            // 版本过旧
            int CLIENT_VERSION_OLD = 5008;
        }
    }

    interface Coupon {
        String TYPE_1 = "网费券";
        String TYPE_2 = "包时券";
        String TYPE_3 = "时段券";
        String TYPE_4 = "折扣券";
        String TYPE_5 = "升级券";
        String TYPE_6 = "代金券";
    }

    /**
     * 数值,金额,概率
     */
    interface Number{
        /**一小时扣费次数 默认10次，隔6分钟扣一次*/
        long TIME_COUNT_DEDUCTION = 10;

        /**百*/
        BigDecimal TEN = new BigDecimal(10);

        /**百*/
        BigDecimal HUNDRED = new BigDecimal(100);

        /**千*/
        BigDecimal THOUSAND = new BigDecimal(1000);

        /**折扣券默认折扣率*/
//        BigDecimal DEFAULT_DISCOUNT_RATE = new BigDecimal(1);
        /**折扣券默认折扣率(分单位)*/
        long DEFAULT_DISCOUNT_RATE = 100;
    }
}

